const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const cors = require('cors');


// 创建Express应用
const app = express();
const port = 3000;

// 中间件
app.use(bodyParser.json());
app.use(cors());


// 模拟数据库中的用户（实际应用中应该使用数据库）
const users = [
    {
        id: 1,
        username: 'admin',
        // 密码是 'password123' 的哈希值
        password: 'password123'
    }
];

// 密钥（实际应用中应该使用环境变量存储）
const JWT_SECRET = 'your-secret-key-here';
const JWT_EXPIRES_IN = '1h';

// 登录接口
app.post('/login', async (req, res) => {
    try {
        const { username, password } = req.body;
        // 验证请求数据
        if (!username || !password) {
            return res.status(400).json({ message: '请提供用户名和密码' });
        }
        // 查找用户
        const user = users.find(u => u.username === username);
        if (!user) {
            return res.status(401).json({ message: '用户名或密码不正确' });
        }
        // 验证密码
        const isPasswordValid = users.find(u => u.password === password);
        if (!isPasswordValid) {
            return res.status(401).json({ message: '用户名或密码不正确' });
        }

        // 生成JWT
        const token = jwt.sign(
            { userId: user.id, username: user.username },
            JWT_SECRET,
            { expiresIn: JWT_EXPIRES_IN }
        );

        // 返回token
        res.json({
            message: '登录成功',
            code: 200,
            data: {
                userinfo: {
                    userId: user.id,
                    username: user.username
                }
            },
            token: token,
            expiresIn: JWT_EXPIRES_IN
        });
    } catch (error) {
        console.error('登录错误:', error);
        res.status(500).json({ message: '服务器错误' });
    }
});

app.post('/logout', (req, res) => {
    res.json({
        message: '退出成功',
        code: 200,
        data: {
            userinfo: {
                userId: 0,
                username: ''
            }
        }
    })
})

// 启动服务器
app.listen(port, () => {
    console.log(`服务器运行在 http://localhost:${port}`);
});
